﻿/// <reference path="jquery.js" />
/// <reference path="../lang/1.js" />
/// <reference path="../../Pulgin/artDialog/artDialog.min.js" />

/* 更新内部版本2015/10/20  增加函数 UrlRepVal()  */




/* 字符串格式化 {0}开始 */
String.prototype.format = function () {
    var args = arguments;
    return this.replace(/\{(\d+)\}/g,
        function (m, i) {
            return args[i];
        });
}



/* 进行字符串格式化。使用方法"hello word we are e team name is{0} , crate time is {1}".format{"izbol","2011/11/11"} */
String.format = function () {
    if (arguments.length == 0)
        return null;

    var str = arguments[0];
    for (var i = 1; i < arguments.length; i++) {
        var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
        str = str.replace(re, arguments[i]);
    }
    return str;
}


/* 切换当前页面的语言，已分配自动获取当前地址的功能 */
function CurrentLangChangeLang(isTrue)
{
    if (isTrue) {
        /* 语言切换 */
        var current_url = window.location.href;
        var a_lang_count = $("div#Head .system-lang a").length;
        for (var i = 0; i < a_lang_count; i++) {
            var date_lang = $("div#Head .system-lang a:eq({0})".format(i)).attr("data-lang");
            var new_herf = UrlRepVal(current_url, "lang", date_lang);
            $("div#Head .system-lang a:eq({0})".format(i)).attr("href", new_herf);
        }
    }
}


/* 对二位数组进行排序，按一位数组的第一个元素进行拍寻。参数值是二维数组 */
function SortIntById(arr) {
    arr.sort(function (x, y) {

        return x[0] - y[0];
    });
    return arr;
}
/* 获取地址栏变量信息 */
function GetVal(key, default_Val) {
    var url = location.href.split("?");
    if (url[1] == null) return default_Val;
    var field = url[1].split("&");
    for (i = 0; i < field.length; i++) {
        var val = field[i].split("=");
        if (val[0] == key) return val[1];
    }
    return default_Val;
}
function GetLang()
{
    return GetVal("lang", 1);
}
/* HTML文本进行HTML编码 */
function HTMLEncode(html) {
    var temp = document.createElement("div");
    (temp.textContent != null) ? (temp.textContent = html) : (temp.innerText = html);
    var output = temp.innerHTML;
    temp = null;
    return output;
}
/* HTML文本进行HTML解码 */
function HTMLDecode(text) {
    var temp = document.createElement("div");
    temp.innerHTML = text;
    var output = temp.innerText || temp.textContent;
    temp = null;
    return output;
}

/* 获取是不是手机在访问 */
function IsPhone() {
    var sUserAgent = navigator.userAgent;
    var isLinux = (String(sUserAgent).indexOf("Android") > -1);
    if (isLinux) return true;
    var isLinux = (String(sUserAgent).indexOf("iPhone") > -1);
    if (isLinux) return true;
    return false
}


/* 获取checkbox的值，input_select 是html选择器，可写id，class或者其他属性来选择 */
function GetCheckboxValue(input_select) {
    if ($(input_select).is(':checked'))
        return 1;
    return 0;

}



/*
    URL中的变量值替换 [ 比如var str="url?a=1&b=2&c=3&d=5" 函数调用函数(str,'b',5)返回url?a=1&b=5&c=3&d=5 ]
    添加时间:2015/10/20
*/
function UrlRepVal(url, varname, val) {
    var vallist = url.split("?")[1].split("&");
    var newval;
    var newurl;
    var isthere = false;
    for (var i = 0; i < vallist.length; i++) {
        var cval = vallist[i];
        var vname = cval.split("=")[0];
        if (vname === varname) {
            //newval = vname + "=" + val;
            newval = "{0}={1}".format(vname, val);
            vallist[i] = newval;
            isthere = true;
            break;
        }
    }

    if (!isthere) {
        vallist.push("{0}={1}".format(varname, val));
    }
    newurl = "{0}?{1}".format(url.split("?")[0], vallist.join("&"));
    return newurl;
}




/* 时间格式化，yyyyMM/ddHHmmss模式 */
function TimeToFolderName(dates) {
    var times = new Date(dates);

    return times.Format("yyyyMM/ddhhmmss");

}

// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1,                 //月份
        "d+": this.getDate(),                    //日
        "h+": this.getHours(),                   //小时
        "m+": this.getMinutes(),                 //分
        "s+": this.getSeconds(),                 //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds()             //毫秒
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}


/* 展现正在加载效果。后台使用。HTML5+CSS3 效果。使用方法laoding(true)是显示加载,laoding(false)是关闭展示效果。 */
function Laoding(istrue) {

    if (istrue == true) {
        var html_value = "<div class=\"load-container\"><div class=\"loader\"></div></div>";
        $("body").append(html_value);
        $(".load-container").css("display", "block");
    }
    else {
        $(".load-container").css("display", "none");
        $(".load-container").remove();
    }

}

/* 显示对话框，输入要提示的文本只可；调用方法 Dialog("hello worold") */
function Dialog(Alert_Text) {
    Dialog_Full(null, Lang_Prompt, true, Alert_Text);
}

function TimeDialog(Alert_Text, Ok_Fun) {
    Dialogs = art.dialog({
        title: Lang_Prompt,
        content: Alert_Text,
        ok: Ok_Fun
    });
}
/* 带全参数 dialong_id 对话框ID，dialog_title 对话框标题, is_lock 是否锁定页面,conteny 对话框显示的HTML内容 */
function Dialog_Full(dialong_id, dialog_title, is_lock, content) {
    Dialogs = art.dialog({
        id: dialong_id,
        title: dialog_title,
        lock: is_lock,
        content: content
    });
}
/* 显示加载式提示框[前端使用]isTrue 可取true或false 。 true时显示加载框，false是关闭加载框 */
function DialogLaoding(isTrue) {

    var html_text = "<img class='laoding_img' src=\"../static/img/laoding-big.gif\" /><p class='laoding_text'>{0}</p>".format(Warning_Waiting);
    Dialog_Full("Dialog_Window", Lang_Prompt, true, html_text)
    var new_dialog = art.dialog.get('Dialog_Window');

    if (isTrue == false) {
        try {
            new_dialog.close();
        }
        catch (e) {
            alert(e.name + "\n" + e.message);
        }
    }
}

function DialogYesOrNo(Alert_Text, Fun_Yes, Fun_No) {
    artDialog(
        {
            id: null,
            title: Lang_Prompt,
            content: Alert_Text,
            lock: true,
            style: 'succeed noClose'
        },
        Fun_Yes,
        Fun_No
    );
}
//输入框
//title:提示框标题
//def:默认值
//输入框确定按钮点击事件
function Prompt(title, def, fun) {
    art.prompt(title, fun, def);
}

//多选框(checkbox)被选择
//checks也可以是ID也可以是class
function IsChecked(checks) {
    return $(checks).is(":checked");
}

//排序算法(按给定属性,排序给定的父元素里面的所有子元素)
//parent是父元素(like <ul>)
//childs是子元素集合(like <li>)
//attribs排序时,根据attribs的大小来排序
//isTrue是表示正向或反向
function Sort_List(parent, childs, attribs, isTrue) {
    var sorted_list;
    if (isTrue) {
        sorted_list = $(childs).sort(function (x, y) {
            return parseFloat($(x).attr(attribs)) - parseFloat($(y).attr(attribs));
        });
    }
    else {
        sorted_list = $(childs).sort(function (y, x) {
            return parseFloat($(x).attr(attribs)) - parseFloat($(y).attr(attribs));
        });
    }

    $(parent).append(sorted_list);
}

/* 返回错误代码相关的语言提示 */
function Show_Erorr_Text(val) {
    val = val * -1;
    switch (val) {
        case 0: return Lang_Error0; break;
        case 1: return Lang_Error1; break;
        case 2: return Lang_Error2; break;
        case 3: return Lang_Error3; break;
        case 4: return Lang_Error4; break;
        case 5: return Lang_Error5; break;
        case 6: return Lang_Error6; break;
        case 7: return Lang_Error7; break;
        case 8: return Lang_Error8; break;
        case 9: return Lang_Error9; break;
        case 10: return Lang_Erro1r10; break;
        case 11: return Lang_Error11; break;
        case 12: return Lang_Error12; break;
        case 13: return Lang_Error13; break;
        case 14: return Lang_Error14; break;
        case 15: return Lang_Error15; break;
        case 16: return Lang_Error16; break;
        case 17: return Lang_Error17; break;
        case 18: return Lang_Error18; break;
        case 19: return Lang_Error19; break;
        case 20: return Lang_Error20; break;
        case 21: return Lang_Error21; break;
        default: return Lang_Error + " (-{0}) ".format(val);
    }
}


/*Ajax处理函数Ajax_Excute（AJAX处理地址,数据,执行之前的函数，执行完成后的函数，操作成功时的函数，操作失败时的函数）*/
function Ajax_Excute(url, data, before, finish, right, lie) {
    Ajax_Excute_Full(url, data, before, finish, right, lie, "dialog");
}

/* /*Ajax处理函数Ajax_Excute（AJAX处理地址,数据,执行之前的函数，执行完成后的函数，操作成功时的函数，操作失败时的函数,alert_mode:操作失败时提示方式{dialog,or 显示的位置ID}）*/
function Ajax_Excute_Full(url, data, before, finish, right, lie, alert_position) {
    jQuery.ajax({
        url: url,
        type: "post",
        cache: "false",
        data: data,
        beforeSend: function () { Laoding(true); if (before) before(); },
        complete: function () { Laoding(false); DialogLaoding(false);  if (finish) finish(); },
        success: function (msg) {
            if (msg > 0) {
                if (right)
                    if (right.length > 0) {
                        right(msg);
                    } else {
                        right();
                    }

            } else {
                if (alert_position == "dialog")
                    Dialog(Show_Erorr_Text(msg));
                else {
                    $("#{0}".format(alert_position)).html(Show_Erorr_Text(msg));
                    $("#{0}".format(alert_position)).addClass("error");
                }
            }
            if (lie) {
                if (lie.length > 0) {
                    lie(msg);
                } else {
                    lie();
                }
            }
        },
        //error: function (XMLHttpRequest, textStatus, errorThrown) {
        //    Dialog("ERROR：" + XMLHttpRequest.status + " , 错误类型 ： " + XMLHttpRequest.readyState + " , 错误文本：" + textStatus);
        //}
    });
}


//生成一位整型数组
//range(5)-->[0, 1, 2, 3, 4];
//range(9,15)-->[9, 10, 11, 12, 13, 14];
//range(4,20,3)-->[4, 7, 10, 13, 16, 19];
//range(10,-5,-2)-->[10, 8, 6, 4, 2, 0, -2, -4];
function range() {
    var arr = new Array();
    var step = 1;
    var start = 0;
    var end = 0;
    if (arguments.length === 1) {
        end = arguments[0];
    }
    if (arguments.length === 2) {
        start = arguments[0];
        end = arguments[1];
    }
    if (arguments.length === 3) {
        start = arguments[0];
        end = arguments[1];
        step = arguments[2];
    }
    if (step < 0 && start > end) {
        for (var j = start; j > end; j += step) {
            arr.push(j);
        }
    } else {
        for (var i = start; i < end; i += step)
            arr.push(i);
    }
    return arr;
}


//重新加载
HTMLDivElement.prototype.reload = function (url) {
    //this.innerHTML=$.load()
    $(this).load(url);
}

//返回数组的给定区域内的元素集
Array.prototype.Cut = function (from, to) {
    var arr = new Array();
    for (var i = from; i <= to; i++) {
        arr.push(this[i]);
    }
    return arr;
}

//就像java中的hashmap,C#中的Dictionary对象,key-value;
Array.prototype.asHashMap = function (key) {
    for (var i = 0; i < this.length; i++) {
        if (this[i][0] === key) {
            return this[i][1];
        }
    }
    return 'undefined';
}



/* 获取文件扩展名 比如：.jpg 等 */
function GetFileExt(path)
{
    var point = path.lastIndexOf(".");
    return path.substr(point);
}
/* 获取文件扩展名,不包含点 比如：jpg 等 */
function GetFileExtName(path) {
    return GetFileExt(path).substr(1);
}

/*绝对路径转换为相对路径*/
function getShortUrl(full)
{
    if(full.toLowerCase().startsWith("http")){
        full=full.split("//")[1];
        full=full.substr(full.indexOf("/"));
    }
    return full;
}

/* 分页的实现 totalPages总页数 .  visiblePages 设置最多显示的页码数  */
function Pages(totalPages, visiblePages) {
    /* 当前页数 */
    var current_Page = parseInt(GetVal("page", 1));
    /* 当前页面 */
    var keep_url = window.location.href;
    $('#Pager').jqPaginator({
        totalPages: totalPages,
        visiblePages: visiblePages,
        currentPage: current_Page,
        first: '<li class="first"><a href="javascript:void(0);">{0}<\/a><\/li>'.format(Lang_First),
        prev: '<li class="prev"><a href="javascript:void(0);"><i class="arrow arrow2"><\/i>{0}<\/a><\/li>'.format(Lang_Prev),
        next: '<li class="next"><a href="javascript:void(0);">{0}<i class="arrow arrow3"><\/i><\/a><\/li>'.format(Lang_Next),
        last: '<li class="last"><a href="javascript:void(0);">{0}<\/a><\/li>'.format(Lang_Last),
        page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>',
        onPageChange: function (num, type) {
            /* 页数有变化时候 */
            if (type == "change") {
                var new_url = UrlRepVal(keep_url, "page", num);
                window.location.href = new_url;
            }
        }
    });
}